home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / NEW / A-Newest / Quittner.d64 / tpug info-12 < prev    next >
Text File  |  2009-01-03  |  6KB  |  104 lines

  1. ║CM:TPUG-12
  2. ║PT5:CN1:JU0:PG62
  3. ├╧═╨╒╘┼╥ ├╧══╧─╧╥┼ 64 & ├64 ╔╬╞╧╥═┴╘╔╧╬-12:
  4. ║CN0:PT12
  5. ╙╧╥╘╔╬╟: ╬OTE THAT PRINTERS DIFFER; THESE PROGRAMS WORK FOR THE PRINTER ╔ USE.
  6. ╙╧╥╘╔╬╟ ╬╒═┬┼╥╙:
  7. 0 REM" SORT NUMBERS" BY ╩OE ╤UITTNER.
  8. 10 ?C╚(144)C╚(14):DIM C(1000):?" ┼NTER NUMBERS":G╧1100
  9. 997 P╧ 204,0:GETG$:IFG$="" T╚ 997
  10. 998 IF P┼(207) T╚ 998
  11. 999 P╧ 204,1:RE╘
  12. 1100 ?" ╘O END INPUT ENTER 99999
  13. 1110 F╧I=1 TO 1000:? I;:INPUT C:IF C=99999 T╚ 1120
  14. 1112 C(I)=C:N┼:STOP
  15. 1120 :?:N=I-1:? N"NUMBERS ENTERED":G╧ 5100
  16. 4000 REM" ╞OR THE PRINTER AND INTERFACE ╔ USE:
  17. 4010 ?" ╨RINTER ON? ";:GO╙997:? G$
  18. 4012 P=0:IFG$<>"Y" T╚ RE╘
  19. 4020 P=1:IFP1 T╚ RE╘
  20. 4022 P1=1:CL╧5:CL╧7:OPEN5,4,5:OPEN7,4,7
  21. 4030 F╧ I=1 TO 10
  22. 4032 P╥5,C╚(27)C╚(108)C╚(5):REM LEFT MARGIN=5
  23. 4033 P╥5,C╚(27)C╚(81)C╚(77):N┼:REM RIGHT MARGIN=77
  24. 4039 ?" ╙ET INTERFACE TO ╩UNIOR":GO╙997:RE╘
  25. 5100 :REM" ╙ORT NUMBERS:
  26. 5110 F╧ I=1 TO N-1
  27. 5112 :A=C(I):B=C(I+1):IF A=<B T╚ N┼: G╧5120
  28. 5114 C(I)=B:C(I+1)=A:I=I-1:IFI<1 T╚ I=1
  29. 5116 G╧5112
  30. 5120 :F╧ I=1 TO N:?ST╥(C(I));:IF P T╚ P╥7,ST╥(C(I));
  31. 5122 N┼:?:IFP T╚ P╥7
  32. 5123 END
  33. ╙╧╥╘╔╬╟ ╙╘╥╔╬╟╙:
  34.  ╚ERE IS A PROGRAM TO ENTER STRINGS INTO MEMORY, THEN IT IS USING MACHINE LANGUAGE TO FAST SORT THEM, LEAVING THE RESULT IN MEMORY, AND PRINTS THE SORTED LIST OF STRINGS:
  35. 0 REM "SORT STRINGS" BY ╩OE ╤UITTNER
  36. 10 ?C╚(144)C╚(14)
  37. 20 P╧56,78:CLR:REM  PROTECT 20K+
  38. 21 DEF FNA(I)=I-256* FNB(I):DEF FNB(I)=INT(I/256)
  39. 22 DEF FNC(I)= P┼(I)+256* P┼(I+1)
  40. 30 GO╙4000:FOR I=820 TO 1023:READ A:IF A>255 T╚ 1000
  41. 31 P╧ I,A:N┼:STOP:REM" ═ACHINE LANGUAGE INTO 820+
  42. 997 P╧ 204,0:GET G$:IF G$=""T╚ 997
  43. 998 IF P┼(207) T╚ 998
  44. 999 P╧ 204,1:RE╘
  45. 1000 REM " ╘┘╨┼ ╔╬╘╧ ═┼═╧╥┘:
  46. 1002 ? " ┼NTER STRINGS: ┼ND=999":M=20000-1
  47. 1004 :INPUT G$:IF G$="999"T╚  M=M+1:P╧ M,255:G╧ 5000
  48. 1006 K=LEN(G$):FOR I=1 TO K:M=M+1:P╧ M,ASC(MID$(G$,I,1)):N┼ 
  49. 1008 M=M+1:P╧ M,13: G╧1004
  50. 2000 REM" ╨RINT SORTED LIST OF STRINGS
  51. 2002 :F╧ I=20000 TO M-1: ?C╚(P┼(I));
  52. 2004 IF P T╚ P╥7,C╚(P┼(I));
  53. 2006 N┼:?:IFP T╚ P╥7
  54. 2008 END
  55. 4000 :REM "   ╨RINTER: ╔T WORKS FOR THE ONE ╔ USE
  56. 4010 ?"  ╨RINTER ON? ";:GO╙ 997:? G$
  57. 4012 P=0:IF G$<>"Y" T╚ RE╘
  58. 4020 P=1:IF P1 T╚ RE╘
  59. 4021 P1= 1:CL╧ 5:CL╧ 7:OPEN 5,4,5:OPEN 7,4,7
  60. 4030 FOR I= 1 TO 10
  61. 4032 P╥5,C╚(27)C╚(108)C╚(5)
  62. 4034 P╥5,C╚(27)C╚(81)C╚(77):N┼
  63. 4039 ?"  ╙ET ╔NTERFACE TO ╩UNIOR":GO╙ 997:RE╘
  64. 5000 :REM " ╙ORT ITEMS
  65. 5010 SYS 820
  66. 5012 IF P┼(781)=1 T╚ ?" ┼ND OF STRING SORTING":G╧2000
  67. 5013 IF P┼(781)=2 T╚ ?" Y=255; CHECK DATA":STOP 
  68. 5019 ?"┼╬─ 5019":STOP 
  69. 5020 D┴ 169,32, 133,251, 169,78, 133,252
  70. 5021 D┴ 160,0, 177,251, 201,255, 208,3, 162,1, 96
  71. 5022 D┴ 160,255, 200, 192,255, 208,3, 162,2, 96, 177,251, 201,13, 208,242
  72. 5023 D┴ 200, 24, 152, 101,251, 133,253, 169,0, 101,252, 133,254:REM  INTO 253/4
  73. 5024 D┴ 160,0, 177,251, 209,253, 176,11
  74. 5026 D┴ 165,253, 133,251, 165,254, 133,252, 76,60,3 :REM  NEXT PAIR
  75. 5030 D┴ 208,3, 76,184,3
  76. 5032 D┴ 160,255, 200, 177,251, 153,0,159, 201,13, 208,246:REM  PARKING
  77. 5034 D┴ 160,255, 200, 177,253, 145,251, 201,13, 208,247
  78. 5036 D┴ 160,255, 200, 177,251, 201,13, 208,249
  79. 5038 D┴ 200, 24, 152, 101,251, 133,253, 169,0, 101,252, 133,254
  80. 5040 D┴ 160,255, 200, 185,0,159, 145,253, 201,13, 208,246:REM RETRIEVING
  81. 5042 D┴ 76,52,3
  82. 5050 D┴ 200, 177,251, 201,13, 208,3, 76,108,3:REM IF PAIRS ARE EQUAL
  83. 5052 D┴ 177,253, 201,13, 208,3, 76,108,3
  84. 5054 D┴ 76,102,3:REM "├OMPARE AGAIN
  85. 5999 D┴ 999
  86. ║JU1
  87.    ╠INE 5020: 20000 IS PUT INTO 251/2.
  88.    ╠INE 5021: .┴ (780) IS LOADED INDIRECTLY FROM 251/2. ╔S IT 255, THE END SEARCH INDICATOR? ╔F YES, THEN THE SIGNPOST (.╪ 781) IS SET TO 1 AND THE PROGRAM RETURNS TO ┬┴╙╔├ LINE 5012.
  89.    ╠INE 5022: .┘ (782) IS INCREMENTED TO ZERO FROM 255, AND CHECKED FOR 255. ╔N CASE .┘ IS 255 THEN SOMETHING IS WRONG, THE SIGNPOST .╪ IS SET TO 2, THE PROGRAM RETURNS TO ┬┴╙╔├ LINES 5012 AND 5013. ╔F .┘ IS NOT 255, THEN .┴ IS LOADED INDIRECTLY FROM 251/2 AGAIN, WITH .┘ INCREMENTED, AND AGAIN UNTIL THE END OF STRING INDICATOR, 13, IS FOUND. ╘HEN .┘ CONTAINS THE NUMBER OF CHARACTERS IN THAT STRING.
  90.    ╠INE 5023:.┘+1 IS ADDED TO THE CONTENTS OF 251/2, INITIALLY 20000, TO GET THE STARTING BYTE OF THE NEXT STRING. ╘HAT NUMBER IS PUT INTO 253/4.
  91.    ╠INE 5024: ╘HE FIRST CHARACTERS OF THESE TWO STRINGS ARE COMPARED; THEY MAY NEED NO CHANGE (876), OR NEED  REVERSING (892), OR THEY ARE EQUAL (952). ╔F EQUAL, THEN THE TWO 2ND (OR, IF AGAIN EQUAL, EVEN MORE) CHARACTERS OF BOTH STRINGS WILL BE COMPARED.
  92.    ╠INE 5026: 253/4 IS PUT INTO 251/252, AND THE NEXT PAIR WILL BE COMPARED.
  93.    ╠INE 5030: ╔F REVERSAL IS NEEDED, THEN  TO 5032; IF CHARACTERS ARE EQUAL, THEN TO 5050.
  94.    ╠INE 5032: ╘HE 1ST STRING IS COPIED INTO 40704+.┘ FOR LATER USE.
  95.    ╠INES 5034 AND 5046: ╘HE 2ND STRING IS MADE THE 1ST STRING, OVERWRITING THE BYTES THAT CONTAINED THE 1ST STRING.
  96.    ╠INE 5038: ╘HE STARTING BYTE IS LOCATED, WHERE TO PUT THE STRING THAT IS TO BE RETRIEVED FROM PARKING IN 40704+.┘
  97.    ╠INES 5040 AND 5042: ╘HE REVERSAL IS COMPLETED.
  98.    ╠INES 5050 TO 5052: ╘HE NEXT CHARACTERS OF BOTH STRINGS ARE COMPARED
  99. 820:LDA#32 822:STA251 824:LDA#78 826:STA252 828:LDY#0 830:LDA(251),Y 832:CMP#255 834:BNE TO 839 836:LDX#1 838:RTS
  100. 839:LDY#255 841:INY 842:CPY#255 844:BNE TO 849 846:LDX#2 848:RTS
  101. 849:LDA(251),Y 851:CMP#13 853:BNE TO 841 855:INY 856:CLC 857:TYA 858:ADC251 860:STA253 862:LDA#0 864:ADC252 866:STA254 868:LDY#0  870:LDA(251),Y 872:CMP(253),Y 874:BCS TO 887 876:LDA253 878:STA251 880:LDA254 882:STA252 884:JMP TO 828 887:BNE TO 892 889:JMP TO 952 892:LDY#255 894:INY 895:LDA(251),Y 897:STA40704,Y 900:CMP#13 902:BNE TO 894 904:LDY#255 906:INY 907:LDA(253),Y 909:STA(251),Y 911:CMP#13 913:BNE TO 906 915:LDY#255 917:INY 918:LDA(251),Y 920:CMP#13 922:BNE TO 917 924:INY 925:CLC 926:TYA 927:ADC251 929:STA253 931:LDA#0 933:ADC252 935:STA254 937:LDY#255 939:INY 940LDA40704,Y 943:STA(253),Y 945:CMP#13 947:BNE TO 939 949:JMP TO 820 952:INY 953:LDA(251),Y 955:CMP#13 9557:BNE TO 962 959:JMP TO 876 962:LDA(253),Y 964:CMP#13 966:BNE TO 971 968:JMP TO 876 971:JMP TO 870
  102. ║PT20:CN1
  103. ┬Y ╩OE ╤UITTNER, ╘╨╒╟, ═AY15, 2008.
  104.